

import java.lang.reflect.Array;
import java.util.*;

public class PracticsList {
    public static void main(String[] args) {

        //新建list
        System.out.println("----------新建list---------------------");
        List<String> list = new ArrayList<>();


        //给list加元素
        System.out.println("----------给list加元素--------------------");
        list.add("6");//添加元素
        list.add("2");
        list.add("3");
        list.add("4");

        //获取list长度
        System.out.println("----------获取list长度---------------------");
        System.out.println("list长度为 " + list.size());

        //遍历list、按索引获取list中元素
        System.out.println("----------遍历list、按索引获取list中元素---------------------");

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //判读list是否为空
        System.out.println("----------判读list是否为空---------------------");
        System.out.println(list.isEmpty());

        //判断list里是否存在某个元素
        System.out.println("----------判断list里是否存在某个元素---------------------");
        System.out.println(list.contains("3"));

        //list迭代遍历方式
        System.out.println("----------list迭代遍历方式----------------------");

        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }


        //list转为数组-1
        System.out.println("----------list转为数组-1-----------------------");
        String[] arrays = list.toArray(new String[0]);
        for(int i=0;i<arrays.length;i++){
            System.out.println(arrays[i]);
        }


        //删除list中元素
        System.out.println("------------删除list中元素---------------------");
        list.remove("4");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //清除list中元素
        System.out.println("------------清除list中元素---------------------");
        list.clear();
        System.out.println(list.isEmpty());

        //两个list对比.equals
        System.out.println("-------------两个list对比.equals--------------------");
        list.add("5");
       // list.add("3");
        List<String> list2=new ArrayList<>();
        list2.add("5");
        System.out.println(list.equals(list2));
        list.add("6");
        list.add("7");


        //修改list某个位置的值
        System.out.println("----------------修改list某个位置的值-----------------");
        list.set(0,"43");
        list.set(1,"3");
        list.set(2,"43");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //获取某个值的坐标
        System.out.println("---------------获取某个值的坐标------------------");
        System.out.println(list.indexOf("43"));



        //获取某个值最后一次出现的位置
        System.out.println("-----------获取某个值最后一次出现的位置----------------------");
        System.out.println(list.lastIndexOf("43"));

        //判断list是否包含otherlist的所有元素
        System.out.println("-----------判断list是否包含otherlist的所有元素----------------------");
        List<String> otherlist=new ArrayList<>();
        otherlist.add("43");
        otherlist.add("3");
        System.out.println(list.containsAll(otherlist));


        //把otherlist里面所有元素加到list里
        System.out.println("---------------把otherlist里面所有元素加到list里------------------");
        list.addAll(otherlist);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //把otherlist里面所有元素加到list里--指定位置插入
        System.out.println("-------------把otherlist里面所有元素加到list里--指定位置插入--------------------");
        otherlist.set(0,"8");
        otherlist.set(1,"9");
        list.addAll(1,otherlist);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        //把list里包含的otherlist里的元素删除
        System.out.println("------------把list里包含的otherlist里的元素删除---------------------");
        list.removeAll(otherlist);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }


        //把list中包含otherlist的元素保留，其余移除
        System.out.println("-------------把list中包含otherlist的元素保留，其余移除-------------------");
        list.set(0,"8");
        list.set(1,"9");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("---------------------------------");
        list.retainAll(otherlist);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }


        //Collections方法--判断sublist子列表在列表中的坐标
        System.out.println("-------------Collections方法--判断sublist子列表在列表中的坐标-------------------");
        List<String>  sublist=new ArrayList<>();
        sublist.add("two");
        sublist.add("three");

        List<String>  mainlist=new ArrayList<>();
        mainlist.add("one");
        mainlist.add("two");
        mainlist.add("three");
        mainlist.add("one");
        mainlist.add("two");
        mainlist.add("three");

      int index1=  Collections.indexOfSubList(mainlist,sublist);
        int index2=  Collections.lastIndexOfSubList(mainlist,sublist);
        System.out.println(index1);
        System.out.println(index2);




        //Collections方法--替换指定元素
        System.out.println("-------------Collections方法--替换指定元素-------------------");
        Collections.replaceAll(mainlist,"one","hundred");
        for(String str:mainlist){
            System.out.println(str);
        }


        //Collections方法--求最大值，最小值---？？
        System.out.println("-------------Collections方法--求最大值，最小值-------------------");
        System.out.println(Collections.max(mainlist));
        System.out.println(Collections.min(mainlist));

        //Collections方法--反转集合
        System.out.println("-------------Collections方法--反转集合-------------------");
        Collections.reverse(mainlist);
        for(String str:mainlist){
            System.out.println(str);
        }

        //Collections方法--集合打乱顺序
        System.out.println("-------------Collections方法--集合打乱顺序------------------");
        Collections.shuffle(mainlist);
        for(String str:mainlist){
            System.out.println(str);
        }



    }

}
